map()
和 forEach 很像,不同處在於 forEach 沒有回傳值,使用 map 時會 return 一個新的陣列,所以要用一個變數去接住它產生的新陣列
let skill = ["Java","C#","JavaScript"];
let UpperSkill = skill.map(function(i){
return i.toUpperCase();
});
console.log(UpperSkill); // ["JAVA","C#","JAVASCRIPT"]
Or 箭頭函式
let arr = [ 1, 2, 3, 4 ];
let newArr = arr.map(i => i * 2);
console.log(newArr); // [2, 4, 6, 8 ]
find()
如果找到陣列中符合條件的第一個結果就回傳,return 後面要放條件
let skill = [
{language:"Java",rating:9.5},
{language:"C#",rating:7.0},
{language:"JavaScript",rating:8.5}
];
let result = skill.find(i=>{
return i.rating > 7.0;
})
console.log(result); // {language:"Java",rating:9.5}
如果找不到符合條件的,用 find()
時會回傳 undefined
let skill = [
{language:"Java",rating:9.5},
{language:"C#",rating:7.0},
{language:"JavaScript",rating:8.5}
];
let result = skill.find(i=>{
return i.rating > 10;
})
console.log(result); // undefined
filter()
和 find()
很像,差別在於 filter()
回傳的是全部符合條件的結果
let skill = [
{language:"Java",rating:9.5},
{language:"C#",rating:7.0},
{language:"JavaScript",rating:8.5}
];
let result = skill.filter(i=>{
return i.rating > 7.0;
})
console.log(result); // [{language:"Java",rating:9.5},{language:"JavaScript",rating:8.5}]
如果找不到符合條件的,用 filter()
時會回傳一個空陣列
let skill = [
{language:"Java",rating:9.5},
{language:"C#",rating:7.0},
{language:"JavaScript",rating:8.5}
];
let result = skill.filter(i=>{
return i.rating > 10;
})
console.log(result); // []
includes()
用來判斷陣列中是否包含某個元素,有的話回傳 true,沒有則回傳 false。
可以放入兩個參數,第一個參數為要尋找的元素,第二個參數為開始搜尋的元素索引值。
例如:
const arr = ['apple', 'banana', 'orange'];
console.log(arr.includes('apple')); // true (陣列中有 apple 所以回傳 true)
console.log(arr.includes('apple',0)); // true (陣列中有包含 apple,且 apple 的索引值為 0,所以回傳 true)
console.log(arr.includes('apple',1)); // false (陣列中雖包含 apple,但 apple 的索引值非為 1,所以回傳 false)
console.log(arr.includes('orange',-1)); // true (陣列中有包含 orange,且 orange 的索引值為 -1,所以回傳 true)
console.log(arr.includes('guava')); // false (陣列中沒有 guava 所以回傳 false)
some()
如果有任何一個條件符合,就 return true ,如果沒有任何符合條件的則 return false。
let skill = [
{language:"Java",rating:9.5},
{language:"C#",rating:7.0},
{language:"JavaScript",rating:8.5}
];
let result = skill.some(i=>{
return i.rating > 9.0;
})
console.log(result); // true
有一個結果 > 9.0,所以 return true
假如把條件改成 > 10.0,則會因為找不到符合的條件而回傳 false。
every()
如果每一個條件都符合,就 return true ,如果沒有每個條件都符合則 return false。
let skill = [
{language:"Java",rating:9.5},
{language:"C#",rating:7.0},
{language:"JavaScript",rating:8.5}
];
let result = skill.every(i=>{
return i.rating > 9.0;
})
console.log(result); // false
因為並不是每個結果都 > 9.0,所以 return false
sort()
排列,使用 sort()
要注意的是, sort()
會改變原本的陣列。
let fruit = ["Orange","Apple","Guava"];
fruit.sort(); // 使用 sort() 會改變原陣列
console.log(fruit); // ['Apple', 'Guava', 'Orange']
如果在陣列裡放數字,讓 sort()
去排序的話,結果會照字串比大小的方式,只比第一個,所以會發現陣列中的數字並沒有按照大小來排,而是只照第一個數字的大小排列
let num = [54,11,24,56,64,78,34,7,75];
console.log(num.sort()); // [11,24,34,54,56,64,7,75,78]
所以排列數字時要用另一種方式,在 sort()
裡面給它一個 callback function ,並在裡面放兩個參數:
sort((a, b)=>{
return a-b;
})
ex:
將陣列裡的數字由小到大排列
let num = [54,11,24,56,64,78,34,7,75];
num.sort((a, b)=>{
return a - b;
})
console.log(num); // [7,11,24,34,54,56,64,75,78]
將陣列裡的字串長度由小到大排列
let text = ["php","C#","phython","JavaScript"];
text.sort((a, b)=>{
return a.length - b.length;
})
console.log(text); // ["C#","php","phython","JavaScript"]
sort((a, b)=>{
return b-a;
})
ex:
將陣列裡的數字由大到小排列
let num = [54,11,24,56,64,78,34,7,75];
num.sort((a, b)=>{
return b - a;
})
console.log(num); // [78,75,64,56,54,34,24,11,7]
將陣列裡的字串長度由大到小排列
let text = ["php","C#","phython","JavaScript"];
text.sort((a, b)=>{
return b.length - a.length;
})
console.log(text); // ["JavaScript","phython","php","C#"]